package com.devops.admin.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.devops.admin.model.DOSProject;
import com.devops.admin.po.DOSProjectPo;
import com.devops.admin.vo.DOSProjectVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassNem DOSProjectMapper
 * @Description TODO
 * @Author heyabo
 * @Date 2022/3/18 15:33
 * @Version 1.0
 **/
@Mapper
public interface DOSProjectMapper extends BaseMapper<DOSProject> {

    /**
     * @Author heyabo
     * @Description 查询项目列表
     * @Date 15:10 2022/3/22
     * @Param [page, projectVo]
     * @return java.util.List<com.devops.admin.po.DOSProjectPo>
     **/
    List<DOSProjectPo> getProjects(Page<DOSProjectPo> page, @Param("param") DOSProjectVo projectVo);

    /**
     * @Author heyabo
     * @Description 查询某个人绑定的所有的项目
     * @Date 19:33 2022/4/19
     * @Param [projectVo]
     * @return java.util.List<com.devops.admin.po.DOSProjectPo>
     **/
    List<DOSProjectPo> getProjects(@Param("param") DOSProjectVo projectVo);

    /**
     * @Author heyabo
     * @Description 查询项目列表
     * @Date 15:10 2022/3/22
     * @Param [page, projectVo]
     * @return java.util.List<com.devops.admin.po.DOSProjectPo>
     **/
    List<DOSProjectPo> getAdminProjects(Page<DOSProjectPo> page, @Param("param") DOSProjectVo projectVo);

    /**
     * @Author heyabo
     * @Description 查询已绑定和未绑定资源的项目
     * @Date 08:57 2022/6/10
     * @Param []
     * @return java.util.List<com.devops.admin.po.DOSProjectPo>
     **/
    List<DOSProjectPo> selectBindProjects(Integer resourceId);

    /**
     * 获取项目基本信息和groupName
     * @param projectId
     * @return
     */
    DOSProjectPo getProjectInfo(Integer projectId);

    /**
     * 获取是否在库里有相似度较高的项目名称存在
     * @return
     */
    List<String> getProjectSimilarity(String projectName,Double similarityLimit);

    /**
     * @Author heyabo
     * @Description 校验项目名称的相似度
     * @Date 17:20 2022/11/14
     * @Param [projectName]
     * @return java.lang.String
     **/
    List<String> projectNameSimilarity(String projectName,Double similarityLimit);

    /**
     * 根据kafka topic id查询项目列表
     * @param topicId kafka topic id
     * @return java.util.List<com.devops.admin.model.DOSProject>
     * @author jxt
     * @date 2023/5/18 17:32
     */
    List<DOSProject> selectProjectsByTopicId(Integer topicId);
}
